package Telas;

import java.text.ParseException;

import javax.swing.ButtonGroup;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.text.MaskFormatter;

import Telas.pesquisas.mecanico.TelaPesquisaMecanico;

import Bean.Mecanico;
import Commands.mecanico.MecanicoCommandFactory;
import Commands.mecanico.state.MecanicoCrudStateEditando;
import Commands.mecanico.state.MecanicoCrudStateInativo;
import Commands.mecanico.state.MecanicoCrudStateInserindo;
import Commands.mecanico.state.MecanicoCrudStateTemObjeto;


    

public class MecanicoTela extends TelaPadrao<Mecanico> {
	private static final long serialVersionUID = 1L;
	JLabel lNome;
	JTextField tfNome;
	JLabel lCpf;
	JFormattedTextField tfCpf;
	MaskFormatter mfCpf;
	JLabel lFone;
	JTextField tfFone;
	JLabel lEndereco;
	JTextField tfEndereco;
	JLabel lSituacao;
	JRadioButton rbAtivoSim;
	JRadioButton rbAtivoNao;
	
	public MecanicoTela(){
		super();
		initcomponents(new MecanicoCommandFactory(this), new MecanicoCrudStateEditando(this), new MecanicoCrudStateTemObjeto(this),
				new MecanicoCrudStateInserindo(this),new MecanicoCrudStateInativo(this));
		this.setTitle("Cadastro de mecanicos");
		telaPesquisa = new TelaPesquisaMecanico(this);
	}

	@Override
	public void adicionaCampos() {
		lNome = new JLabel("Nome");
		lNome.setBounds(10, 10, 250, 25);
		getPainelCampos().add(lNome);
		
		tfNome = new JTextField();
		tfNome.setBounds(10, 35, 250, 25);
		getPainelCampos().add(tfNome);
		
		lCpf = new JLabel("Cpf");
		lCpf.setBounds(10, 65, 250, 25);
		getPainelCampos().add(lCpf);
		
		try {
			this.mfCpf = new MaskFormatter("###.###.###-##");
			this.mfCpf.setPlaceholderCharacter('_');
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		tfCpf = new JFormattedTextField(mfCpf);
		tfCpf.setBounds(10, 90, 250, 25);
		getPainelCampos().add(tfCpf);
		
		lFone = new JLabel("Fone");
		lFone.setBounds(10, 115, 250, 25);
		getPainelCampos().add(lFone);
		
		tfFone = new JTextField();
		tfFone.setBounds(10, 145, 250, 25);
		getPainelCampos().add(tfFone);
		
		lEndereco = new JLabel("Endereco");
		lEndereco.setBounds(10, 170, 250, 25);
		getPainelCampos().add(lEndereco);
		
		tfEndereco = new JTextField();
		tfEndereco.setBounds(10, 200, 250, 25);
		getPainelCampos().add(tfEndereco);
		

		lSituacao = new JLabel("Situacao");
		lSituacao.setBounds(10, 225, 250, 25);
		getPainelCampos().add(lSituacao);
		
		ButtonGroup ativo = new ButtonGroup();  
		
		rbAtivoSim = new JRadioButton(); 
		rbAtivoSim.setBounds(10, 250, 80, 25);
		rbAtivoSim.setText("Ativo");  
		rbAtivoSim.setName("true");  
		rbAtivoSim.setSelected(true);
		getPainelCampos().add(rbAtivoSim);  
		ativo.add(rbAtivoSim);  
		        
		rbAtivoNao = new JRadioButton();  
		rbAtivoNao.setBounds(90, 250, 80, 25);
		rbAtivoNao.setText("Inativo");  
		rbAtivoNao.setName("false");  
		getPainelCampos().add(rbAtivoNao);  
		ativo.add(rbAtivoNao);

		
	}

	public String getTfNome() {
		return tfNome.getText();
	}

	public String getTfCpf() {
		return tfCpf.getText();
	}

	public String getTfFone() {
		return tfFone.getText();
	}

	public String getTfEndereco() {
		return tfEndereco.getText();
	}

	public boolean getRbAtivoSim() {
		return rbAtivoSim.isSelected();
	}
	
	@Override
	public void limpaCampos(){
		obj = new Mecanico();
		atualizaCampos();
	}


	@Override
	public void montaObjeto(boolean instancia) {
		if(instancia)
			obj = new Mecanico();
		obj.setNome(getTfNome());
		obj.setEndereco(getTfEndereco());
		obj.setFone(getTfFone());
		obj.setCpf(getTfCpf());
		obj.setAtivo(getRbAtivoSim());
	}

	@Override
	public void atualizaCampos() {
		this.tfNome.setText(obj.getNome());
		this.tfCpf.setText(obj.getCpf());
		this.tfFone.setText(obj.getFone());
		this.tfEndereco.setText(obj.getEndereco());
		this.rbAtivoSim.setSelected(obj.isAtivo());		
	}

	@Override
	public void travaCampos() {
		this.tfNome.setEnabled(false);
		this.tfCpf.setEnabled(false);
		this.tfFone.setEnabled(false);
		this.tfEndereco.setEnabled(false);
		this.rbAtivoSim.setEnabled(false);		
		this.rbAtivoNao.setEnabled(false);		
	}

	@Override
	public void destravaCampos() {
		this.tfNome.setEnabled(true);
		this.tfCpf.setEnabled(true);
		this.tfFone.setEnabled(true);
		this.tfEndereco.setEnabled(true);
		this.rbAtivoSim.setEnabled(true);		
		this.rbAtivoNao.setEnabled(true);	
	}


	
}
